package com.nit.store.security.handler;


import com.alibaba.fastjson.JSON;
import com.nit.store.web.JsonResult;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
public class MyAuthenticationEntryPoint  implements AuthenticationEntryPoint {
    @Override
    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
        if(authException instanceof DisabledException){
            JsonResult<Void> jsonResult =
                    JsonResult.fail(
                            JsonResult.State.ERR_FORBIDDEN,
                            "您的账号被禁用，请联系系统管理员！");
            String jsonResultString = JSON.toJSONString(jsonResult);
            response.setContentType("application/json;charset=utf-8");
            response.getWriter().println(jsonResultString);
        }else{
            JsonResult<Void> jsonResult =
                    JsonResult.fail(
                            JsonResult.State.ERR_FORBIDDEN,
                            "您没有登录！");
            String jsonResultString = JSON.toJSONString(jsonResult);
            response.setContentType("application/json;charset=utf-8");
            response.getWriter().println(jsonResultString);
        }
        //自定义处理：返回一个包含错误信息的json数据
//        JsonResult<Void> jsonResult = JsonResult.fail(JsonResult.State.ERR_FORBIDDEN,"您没有登录！");
//        String jsonResultString = JSON.toJSONString(jsonResult);
//        response.setContentType("application/json;charset=utf-8");
//        response.getWriter().println(jsonResultString);
    }
}
